package com.menghanjun.mhjresourcesharing.utils;

import lombok.extern.slf4j.Slf4j;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Random;
@Slf4j
public class Utils {

    /**
     * 文件拷贝方法
     * @param inputStream  要拷贝的文件流
     * @param outputStream 目标文件流
     * @throws IOException
     */
    public static void copyFile(InputStream inputStream, OutputStream outputStream) throws IOException {
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }
    }




    /**
     * 生成验证码
     * @param codeLength 验证码长度
     * @return
     */
    public static String generateVerificationCode(int codeLength) {
        Random random = new Random();
        StringBuilder code = new StringBuilder();
        for (int i = 0; i < codeLength; i++) {
            int digit = random.nextInt(10); // 生成随机数字（0-9）
            code.append(digit);
        }

        return code.toString();
    }

    /**
     * 生成封面
     * @param text 封面字体
     * @param fontType 字体类型
     * @param fontStyle 字体样式
     * @param fontSize 字体大小
     * @param path 封面路径
     * @param fontColor 字体颜色
     * @param color 背景颜色
     */
    public static void createResourceCover(String text, String fontType, String fontStyle, int fontSize, String path, Color fontColor, Color color,int width,int height) {
        // 创建一个空白的图像
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = image.createGraphics();
        // 设置背景色
        g.setColor(color);
        g.fillRect(0, 0, width, height);
        // 开启抗锯齿
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        // 设置字体和颜色
        int style = 0;
        if(fontStyle.equals("BOLD")){//粗体
            style = Font.BOLD;
        }else if(fontStyle.equals("ITALIC")){//斜体
            style = Font.ITALIC;
        }else if(fontStyle.equals("BOLD_ITALIC")){//粗斜体
            style = Font.BOLD+Font.ITALIC;
        }else{//普通
            style = Font.PLAIN;
        }
        Font font = new Font(fontType, style, fontSize);
        g.setFont(font);
        g.setColor(fontColor);
        // 使用FontMetrics计算文本的宽度和高度
        FontMetrics fm = g.getFontMetrics(font);
        int textWidth = fm.stringWidth(text);
        int textHeight = fm.getHeight();
        // 计算文本的位置以居中显示
        int x = (width - textWidth) / 2;
        int y = (height - textHeight) / 2 + fm.getAscent();
        // 在计算出的位置绘制文本
        g.drawString(text, x, y);
        g.dispose();
        // 保存图像到文件
        File output = new File(path);
        if(output.exists()){
            output.delete();
        }
        try {
            ImageIO.write(image, "png", output);
        } catch (IOException e) {
            log.error("生成资源封面失败", e);
        }
    }

}
